Bruth Force [프로그래머스/c++] Level 2: 기능 개발 문제 링크 - 나는 문제의 설명 그대로 일일이 구현하였다. sum: 완료된 기능 전체 갯수 cnt: index번째 기능이 완료되었을때 함께 완료된 기능 갯수 index: progresses 앞에서 부터 탐색할때의 index 먼저 while을 true로 계속 돌린다. answer 벡터안에 있는 수의 합이 progresses의 사이즈와 같으면 모든 기능 개발을 완료한 것이므로, sum에 answ... 스택/큐Bruth ForceBruth Force [백준/c++] 15652번 : N과 M(4) 문제 링크 - [문제] [풀이] N과 M(2) 문제는 중복없이 오름차순인 수열을 출력하는 문제였다. 이번 N과 M(4)문제는 비내림차순을 만족하면 되는데 이전 index의 수와 같거나 큰 수를 만족하면 된다. 즉, start를 통해 시작하는 숫자를 지정해주면서 중복 검사를 생략하면 된다. 이전 N과 M(2)의 코드에서 check[10]를 통해 중복검사 하는 부분을 빼주고, 다음 재귀함수로 넘... Bruth ForceBruth Force [백준/c++] 1759번 : 암호 만들기 문제 링크 - [문제] 배열에 문자열을 입력받고, 배열을 정렬한다. (암호는 정렬된 문자열 이니까) 재귀함수를 통해 조건(모음,자음 갯수)를 만족하면서 길이가 L인 오름차순으로 된 문자열을 전부 찾는다 func(index, start, l, c) 에서 index는 현재 문자열의 index, start는 다음 index에 올 문자의 시작지점, l은 암호의 길이, c는 주어진 문자열의 길이이다.... Bruth ForceBruth Force [백준/c++] 18290번: NM과 K(1) 문제 링크 - [문제] [풀이 1] 재귀함수를 통해 모든 k개를 선택하는 모든 조합을 체크 func(cnt, sum) : cnt는 선택된 수 카운트, sum은 선택된 수들의 합 cnt==k 즉 ,k개 선택이 완료되면 이전 조합에서의 sum 최댓값과 비교하여 answer갱신. 상세 설명은 주석으로 작성 해당풀이의 시간 복잡도는 (10*10)^4 =1억 (재귀함수 최대 4번실행이므로) [코드 1... Bruth ForceBruth Force [백준/c++] 15651번: N과 M(3) 문제 링크 - [문제] [풀이] N과 M(1) 문제에서 달라진 점은 수열을 만들때, 중복을 허용한다는 점이다. 그러므로 더이상 check[10]을 통해 수의 사용여부를 체크 할 필요 없이 바로 arr[]에 넣어주고, 다음 재귀함수로 넘어가면 된다. 자세한 풀이는 N과 M(1) 문제 풀이 참고. [코드]... Bruth ForceBruth Force [백준/c++] 15654번 : N과 M(5) 문제 링크 - [문제] [풀이] 이전 시리즈와 다른점은 수열을 구성하는 값들이 (사용자)입력으로 주어진다. input이라는 배열을 선언하여, 0번째 인덱스부터 순서대로 값을 입력받고 sort를 이용해 정렬하였다. 이전 문제들과 마찬가지로, check[input[i]]을 통해 input[i]에 해당하는 값을 중복체크 해주었다. [배열 정렬] [헤맸던 점] 처음엔 check[], arr[], i... Bruth ForceBruth Force [백준/c++] 15650번: N과 M(2) 문제 링크 - 문제 풀이 N과 M(1) 문제와 풀이방식 거의 비슷 (해당 문제 풀이 참고) 달라진 점은, 고른 수열이 오름차순 이어야 한다. 수열의 다음 위치의 수를 결정하는 함수는 func(index+1,n,m) 이었는데 함수 매개변수에 for문의 시작위치를 결정하는 start를 추가하였다. - index위치에 i라는 숫자로 정해졌다면, start자리에 i+1를 대입함으로써 func(ind... Bruth ForceBruth Force [백준/c++] 15649번: N과 M (1) 문제 링크 - [문제] [풀이] [재귀함수로 풀수 있는 브루트포스 문제 종류] 순서와 관련된 문제 -> N가지 중에서 M개를 뽑을 때, 순서가 중요한 문제 시간복잡도 : N! 선택과 관련된 문제 -> N가지 중에서 M개를 뽑을 때, 일부를 선택하거나, 선택하지 않음. 시간복잡도 : 2^N (2개의 선택이 총 N가지 있는거니까) [풀이] 이 문제에서는 N개중 M개를 고르는 문제이고, 순서가 다... Bruth ForceBruth Force [백준/c++] 6603번: 로또 문제 링크 - k개 중에, 6개 선택한 모든 방법을 사전순서대로 출력하는 문제이다. 자세한 풀이는 주석 참고 브루트포스 문제에서 가장 중요한 것은 재귀 이다. 🍄 배열 초기화 헤더파일 <string.h> or <memory.h>선언 memset(배열 이름, 초기화 하려는 수, sizeof(배열이름)) memset은 바이트 단위로 초기화 하므로 0, -1 이외의 수는 초기화 할 수 없다.... Bruth Force재귀Bruth Force
[프로그래머스/c++] Level 2: 기능 개발 문제 링크 - 나는 문제의 설명 그대로 일일이 구현하였다. sum: 완료된 기능 전체 갯수 cnt: index번째 기능이 완료되었을때 함께 완료된 기능 갯수 index: progresses 앞에서 부터 탐색할때의 index 먼저 while을 true로 계속 돌린다. answer 벡터안에 있는 수의 합이 progresses의 사이즈와 같으면 모든 기능 개발을 완료한 것이므로, sum에 answ... 스택/큐Bruth ForceBruth Force [백준/c++] 15652번 : N과 M(4) 문제 링크 - [문제] [풀이] N과 M(2) 문제는 중복없이 오름차순인 수열을 출력하는 문제였다. 이번 N과 M(4)문제는 비내림차순을 만족하면 되는데 이전 index의 수와 같거나 큰 수를 만족하면 된다. 즉, start를 통해 시작하는 숫자를 지정해주면서 중복 검사를 생략하면 된다. 이전 N과 M(2)의 코드에서 check[10]를 통해 중복검사 하는 부분을 빼주고, 다음 재귀함수로 넘... Bruth ForceBruth Force [백준/c++] 1759번 : 암호 만들기 문제 링크 - [문제] 배열에 문자열을 입력받고, 배열을 정렬한다. (암호는 정렬된 문자열 이니까) 재귀함수를 통해 조건(모음,자음 갯수)를 만족하면서 길이가 L인 오름차순으로 된 문자열을 전부 찾는다 func(index, start, l, c) 에서 index는 현재 문자열의 index, start는 다음 index에 올 문자의 시작지점, l은 암호의 길이, c는 주어진 문자열의 길이이다.... Bruth ForceBruth Force [백준/c++] 18290번: NM과 K(1) 문제 링크 - [문제] [풀이 1] 재귀함수를 통해 모든 k개를 선택하는 모든 조합을 체크 func(cnt, sum) : cnt는 선택된 수 카운트, sum은 선택된 수들의 합 cnt==k 즉 ,k개 선택이 완료되면 이전 조합에서의 sum 최댓값과 비교하여 answer갱신. 상세 설명은 주석으로 작성 해당풀이의 시간 복잡도는 (10*10)^4 =1억 (재귀함수 최대 4번실행이므로) [코드 1... Bruth ForceBruth Force [백준/c++] 15651번: N과 M(3) 문제 링크 - [문제] [풀이] N과 M(1) 문제에서 달라진 점은 수열을 만들때, 중복을 허용한다는 점이다. 그러므로 더이상 check[10]을 통해 수의 사용여부를 체크 할 필요 없이 바로 arr[]에 넣어주고, 다음 재귀함수로 넘어가면 된다. 자세한 풀이는 N과 M(1) 문제 풀이 참고. [코드]... Bruth ForceBruth Force [백준/c++] 15654번 : N과 M(5) 문제 링크 - [문제] [풀이] 이전 시리즈와 다른점은 수열을 구성하는 값들이 (사용자)입력으로 주어진다. input이라는 배열을 선언하여, 0번째 인덱스부터 순서대로 값을 입력받고 sort를 이용해 정렬하였다. 이전 문제들과 마찬가지로, check[input[i]]을 통해 input[i]에 해당하는 값을 중복체크 해주었다. [배열 정렬] [헤맸던 점] 처음엔 check[], arr[], i... Bruth ForceBruth Force [백준/c++] 15650번: N과 M(2) 문제 링크 - 문제 풀이 N과 M(1) 문제와 풀이방식 거의 비슷 (해당 문제 풀이 참고) 달라진 점은, 고른 수열이 오름차순 이어야 한다. 수열의 다음 위치의 수를 결정하는 함수는 func(index+1,n,m) 이었는데 함수 매개변수에 for문의 시작위치를 결정하는 start를 추가하였다. - index위치에 i라는 숫자로 정해졌다면, start자리에 i+1를 대입함으로써 func(ind... Bruth ForceBruth Force [백준/c++] 15649번: N과 M (1) 문제 링크 - [문제] [풀이] [재귀함수로 풀수 있는 브루트포스 문제 종류] 순서와 관련된 문제 -> N가지 중에서 M개를 뽑을 때, 순서가 중요한 문제 시간복잡도 : N! 선택과 관련된 문제 -> N가지 중에서 M개를 뽑을 때, 일부를 선택하거나, 선택하지 않음. 시간복잡도 : 2^N (2개의 선택이 총 N가지 있는거니까) [풀이] 이 문제에서는 N개중 M개를 고르는 문제이고, 순서가 다... Bruth ForceBruth Force [백준/c++] 6603번: 로또 문제 링크 - k개 중에, 6개 선택한 모든 방법을 사전순서대로 출력하는 문제이다. 자세한 풀이는 주석 참고 브루트포스 문제에서 가장 중요한 것은 재귀 이다. 🍄 배열 초기화 헤더파일 <string.h> or <memory.h>선언 memset(배열 이름, 초기화 하려는 수, sizeof(배열이름)) memset은 바이트 단위로 초기화 하므로 0, -1 이외의 수는 초기화 할 수 없다.... Bruth Force재귀Bruth Force